package com.ctvit.cch.core.pojo.dto.creative;

import java.util.List;

import org.springframework.util.Assert;
import org.springframework.web.multipart.MultipartFile;

import com.ctvit.cch.core.enums.CreationSourceEnum;
import com.ctvit.cch.core.enums.FileTypeEnum;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

/**
 * 灵感创作提交 DTO
 *
 * @author heyingcheng
 * @date 2025/11/07
 */
@Getter
@Setter
@ToString
public class InspirationCreationSubmitDTO {

    /**
     * 创意标题
     */
    private String title;

    /**
     * 创意描述
     */
    private String description;

    /**
     * 引用ID
     */
    private String refId;

    /**
     * 创作来源 INSP-灵感, HOT-热门, IDEA-创意
     */
    private String source;

    /**
     * 创意类型 TEXT-文本, FILE-文件, IMAGE-图片,
     */
    private String fileType;

    /**
     * 创意文件列表
     */
    private List<MultipartFile> files;

    public boolean validated() {
        if (CreationSourceEnum.HOT.name().equals(source)) {
            Assert.hasText(refId, "榜单ID不能为空");
        } else if (CreationSourceEnum.IDEA.name().equals(source)) {
            Assert.hasText(refId, "创意ID不能为空");
        } else if (CreationSourceEnum.INSP.name().equals(source)) {
            this.title = "AI灵感发散";
            if (FileTypeEnum.TEXT.name().equals(fileType)) {
                Assert.hasText(description, "创作想法不能为空");
            } else if (FileTypeEnum.FILE.name().equals(fileType) || FileTypeEnum.IMAGE.name().equals(fileType)) {
                Assert.notEmpty(files, "创作文件不能为空");
                Assert.isTrue(files.size() == 1, "最多只能上传 1 个文件");
            } else {
                throw new IllegalArgumentException("无效的创意类型");
            }
        } else {
            throw new IllegalArgumentException("无效的创作来源");
        }

        return true;
    }

}
